package com.qishanor;

import cn.dev33.satoken.secure.SaSecureUtil;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;


public class Init {
    /**
     * 首次启动之前 根据自己的明文密码生成数据库加密后的密码
     *
     */

    public static void main(String[] args) {
        encryptDbPassword();

    }
    public static void encryptDbPassword(){
        /**
         * config配置参数要和配置文件中一致
         *
         * # 配置文件加密根密码
         * jasypt:
         *   encryptor:
         *     password: qishanor
         *     algorithm: PBEWithMD5AndDES
         */
        StandardPBEStringEncryptor standard = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();
        config.setAlgorithm("PBEWithMD5AndDES");// 加密的算法，这个算法是默认的
        config.setPassword("qishanor");
        config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
        standard.setConfig(config);

        String encryptedText = standard.encrypt("12345678");//12345678为数据库的明文密码，需要替换成自己的
        System.out.println("加密后的密码："+encryptedText+"并将密码替换到配置文件中的数据库密码处，只替换ENC括号内的内容，保留ENC");


        String decryptText=standard.decrypt(encryptedText);
        System.out.println("解密明文："+decryptText);
    }

    /**
     * @description: 前端密码 相关加密解密配置
     *
     **/
    public static void frontPassword(){
        AES aes = new AES(Mode.CFB, Padding.NoPadding,"chaosqishanorcom".getBytes(),"chaosqishanorcom".getBytes());
        String test=aes.encryptBase64("123456").toString();//加密
        System.out.println(test);

        //解密
        //String test_result=aes.decryptStr(test);//解密
        //System.out.println(test_result);

        //数据库中加密方式 md5(md5(str) + md5(salt))
        String md5= SaSecureUtil.md5BySalt(test,"qishanor.com");
        System.out.println(md5);
    }
}
